#pragma once
#include <iostream>
#include <fstream>
#include <string>

class Util
{
public:
    static bool ReadFileContent(std::string &filename, std::string *out)
    {
        // std::ifstream in(filename);
        // if (!in.is_open())
        //     return false;

        // std::string line;
        // while (getline(in, line))
        // {
        //     *out += line;
        // }
        // in.close();
        // return true;

        int filesize = FileSize(filename);
        if(filesize>0)
        {
            std::ifstream in(filename);
            if(!in.is_open())
                return false;
            out->resize(filesize);
            in.read((char*)(out->c_str()),filesize);
            in.close();
        }
        else return false;
        return true;
    }
    static bool ReadOneLine(std::string &srcstr, std::string *out, const std::string &sep)
    {
        auto pos = srcstr.find(sep);
        if (pos == std::string::npos)
            return false;

        *out += srcstr.substr(0, pos);
        srcstr.erase(0, pos + sep.size());
        return true;
    }
    static int FileSize(const std::string &filename)
    {
        std::ifstream in(filename,std::ios::binary);
        if(!in.is_open())
            return -1;
        in.seekg(0,in.end);
        int filesize = in.tellg();
        in.seekg(0,in.beg);
        in.close();
        return filesize;
    }
};